class_name FloatingText
extends Control



@onready var value_label: Label = $ValueLabel


@export_group("setup")
## 初始化时随机的旋转范围，其中 x 表示最小值，y 表示最大值
@export var rotation_range: Vector2 = Vector2(-10.0, 10.0)

@export_group("tween")
## 动画时随机的缩放范围，其中 x 表示最小值，y 表示最大值
@export var scale_range: Vector2 = Vector2(0.8, 1.6)
## 动画修改位置的偏移量
@export var position_offset: Vector2 = Vector2(0.0, -15.0)
## 动画持续时间
@export var duration: float = 0.4



var _random_scale: float = 1.0


func setup(value: String, color: Color):
	value_label.text = value
	modulate = color
	scale = Vector2.ZERO
	rotation = deg_to_rad(randf_range(rotation_range.x, rotation_range.y))
	_random_scale = randf_range(scale_range.x, scale_range.y)
	_create_tween()



func _create_tween():
	var tween := create_tween()
	tween.finished.connect(_on_tween_finished)
	tween.parallel().tween_property(self, "scale", _random_scale * Vector2.ONE, duration)
	tween.parallel().tween_property(self, "global_position", global_position + position_offset, duration)
	tween.tween_interval(duration + 0.1)
	tween.parallel().tween_property(self, "scale", Vector2.ZERO, duration)
	tween.parallel().tween_property(self, "modulate:a", 0.0, duration)


func _on_tween_finished():
	queue_free()
